﻿// 二位数组.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//二维数组的定义：类型说明符  数组名[数组大小][数组大小]    前面的表示行，后面的表示列
//二维数组的初始化：用{}
//数组下标从0开始
//	int arr[2][9] = { {1,2,3,4,5,6,7,8,9},
	//{9, 8, 7, 6, 5, 4, 3, 2, 1; }
//};
	//int arr1[2][9] = { 1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1 };
	//以上的二维数组存储方式一样，赋值是一行一行的赋值
	//int arr2[2][9] = { {1,2,3,4,5,6,7,8,9},{9,8,7,6,5,4,3,2,1} };
	//int arr3[2][9] = { {1,2,3},{9,8,7} };//没有赋值的地方系统默认为0

	//int arr4[][4];错误的方式
	//int arr5[2][];错误的方式

	//int arr6[][3] = {//arr6四行三列，后面两个没赋值的默认为0
	//1,2,3,
	//4,5,6,
	//7,8,9,
	//10
	//};//5这个数据用数组表示为arr6[1][1]
	//ptintf("%d\n",arr6[3][2]);
	//for (int i = 0; i < 4; i++)//第一个for循环用来便利行
	//{
	//	for (int j = 0; j < 3; j++)//第二个for循环遍历列
	//	{
//			printf("%d\t", arr6[i][j]);
//		}
//	}

	//int arr8[2][4][3] = {//三维数组：有两个二维数组，两行，三列
	//	{//三维数组初始化方法
	//	{1,2,3},
	//	{4,5,6},
	//	{7,8,9},
	//	{10}
	//	},
	//	{
	//	{1,2,3},
	//	{4,5,6},
	//	{7,8,9},//中的8表示  arr8[1][2][1]      //[第二个二维数组(下标从1开始)][二维数组第几行][第几列]
	//	{10}
	//}
	//
	//};


	//printf("%d\n",arr8[1][2][1]);


//四维数组的初始化
	//int arr9[2][3][4][5] =//这个四维数组有两个三维数组，三个二维数组
	//{
	//	{
	//		{
	//			{1,2},
	//			{1,2}//二维数组
	//		},
	//		{
	//			{3,4},
	//			{5,6}
	//		}//第一个三维数组
	//	},
	//	{
	//		{
	//			{1,2},//输出这个花括号里的2
	//			{1,2}
	//		},
	//		{
	//				{3,4},
	//				{5,6}
	//		}
	//	},//第二个三维数组
	//	
	//};
	//printf("%d\n",arr9[1][1][0][1]);
	//for (int i = 0; i < 2; i++)//遍历两个三维数组
	//{
	//	for (int j = 0; j<3; j++)//
	//	{
	//		for (int x = 0; x < 4; x++)
	//		{
	//			for (int y = 0; y < 5; y++)//遍历每一行
	//			{
	//				printf("%d\t",arr9[i][j][x][y]);
	//			}
	//			printf("\n");
	//		}
	//	}
	//}

#include<stdio.h>
#include<Windows.h>//清屏函数
#include<conio.h>//
int main()
{
	int x=0,y=0;//人物的坐标
	//1表示墙  2表示人  3表示箱子  4表示目的地
	int arr[5][5] = {
	1,1,1,1,1,
	1,0,0,0,1,
	1,0,2,4,1,
	1,0,0,3,1,
	1,1,1,1,1,
	};
	while (1)
	{
		//清屏
		system("cls");//清除控制台里面的内容
		//输出二维数组中的所有数据

		for (int i = 0; i < 5; i++)
		{
			for (int j = 0; j < 5; j++)
			{
				if (arr[i][j] == 2)
				{
					x = i;
					y = j;
				}

			}
		}


		for (int i = 0; i < 5; i++)
		{
			for (int j = 0; j < 5; j++)
			{
				printf("%d\t", arr[i][j]);
			}
			printf("\n");
		}


		switch (_getch())//从键盘获取一个字符.如果没有输入就会一直等待
		{
		case 's'://表示向下移动
			if (arr[x + 1][y] == 0)
			{
				arr[x + 1][y] += 2; //x+1表示下一行  把下一步是空地的地方+2，变成人
				arr[x][y] -= 2;//原来的人的位子-=2,变成空地
			}
			break;
			//写左右上移动
		}
	}
	return 0;
}

